import http from './http'

/**
 * 获取用户健康数据列表
 * @param {Object} params 查询参数
 * @returns {Promise} 响应Promise
 */
export function getHealthDataList(params) {
  return http.get('/api/health-data', { params })
}

/**
 * 获取健康数据详情
 * @param {number} id 健康数据ID
 * @returns {Promise} 响应Promise
 */
export function getHealthData(id) {
  return http.get(`/api/health-data/${id}`)
}

/**
 * 添加健康数据
 * @param {Object} data 健康数据
 * @returns {Promise} 响应Promise
 */
export function addHealthData(data) {
  return http.post('/api/health-data', data)
}

/**
 * 更新健康数据
 * @param {number} id 健康数据ID
 * @param {Object} data 健康数据
 * @returns {Promise} 响应Promise
 */
export function updateHealthData(id, data) {
  return http.put(`/api/health-data/${id}`, data)
}

/**
 * 删除健康数据
 * @param {number} id 健康数据ID
 * @returns {Promise} 响应Promise
 */
export function deleteHealthData(id) {
  return http.delete(`/api/health-data/${id}`)
}

/**
 * 获取所有健康数据
 * @returns {Promise} 响应Promise
 */
export function getAllHealthData() {
  return http.get('/api/health-data')
}

/**
 * 获取分页健康数据
 * @param {Object} params 分页参数
 * @returns {Promise} 响应Promise
 */
export function getPagedHealthData(params) {
  return http.get('/api/health-data/paged', { params })
}

/**
 * 获取指定ID的健康数据
 * @param {number} id 健康数据ID
 * @returns {Promise} 响应Promise
 */
export function getHealthDataById(id) {
  return http.get(`/api/health-data/${id}`)
}

/**
 * 创建健康数据
 * @param {Object} data 健康数据
 * @returns {Promise} 响应Promise
 */
export function createHealthData(data) {
  // 添加更多日志
  console.log('API - 创建健康数据 - 原始请求数据:', JSON.stringify(data));
  
  // 确保日期格式正确 - 检查日期是否包含T格式，如果是则转换为空格分隔格式
  const processedData = { ...data };
  if (processedData.recordDate) {
    // 处理ISO格式的日期字符串
    if (typeof processedData.recordDate === 'string' && processedData.recordDate.includes('T')) {
      processedData.recordDate = processedData.recordDate.replace('T', ' ').substring(0, 19);
      console.log('API - 创建健康数据 - 转换T格式日期:', processedData.recordDate);
    }
    // 处理Date对象
    else if (processedData.recordDate instanceof Date) {
      const date = processedData.recordDate;
      processedData.recordDate = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
      console.log('API - 创建健康数据 - 转换Date对象:', processedData.recordDate);
    }
  }
  
  console.log('API - 创建健康数据 - 处理后请求数据:', JSON.stringify(processedData));
  
  return http.post('/api/health-data', processedData)
}

/**
 * 获取指定日期范围内的健康数据
 * @param {string} startDate 开始日期，格式为 YYYY-MM-DD HH:mm:ss
 * @param {string} endDate 结束日期，格式为 YYYY-MM-DD HH:mm:ss
 * @returns {Promise<Array>} 健康数据列表
 */
export function getHealthDataByDateRange(startDate, endDate) {
  console.log('API - 请求健康数据 - 日期范围:', { startDate, endDate });
  
  // 确保日期格式正确
  let processedStartDate = startDate;
  let processedEndDate = endDate;
  
  // 处理ISO格式日期
  if (typeof processedStartDate === 'string' && processedStartDate.includes('T')) {
    processedStartDate = processedStartDate.replace('T', ' ').substring(0, 19);
  }
  
  if (typeof processedEndDate === 'string' && processedEndDate.includes('T')) {
    processedEndDate = processedEndDate.replace('T', ' ').substring(0, 19);
  }
  
  // 处理Date对象
  if (processedStartDate instanceof Date) {
    const date = processedStartDate;
    processedStartDate = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
  }
  
  if (processedEndDate instanceof Date) {
    const date = processedEndDate;
    processedEndDate = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')} ${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
  }
  
  console.log('API - 请求健康数据 - 处理后的日期范围:', { processedStartDate, processedEndDate });
  
  return http.get('/api/health-data/range', {
    params: { startDate: processedStartDate, endDate: processedEndDate }
  });
}

/**
 * 获取最新的健康数据
 * @returns {Promise} 响应Promise
 */
export function getLatestHealthData() {
  return http.get('/api/health-data/latest')
} 